#include <iostream>
#include <cstring>
using namespace std;
int ret;
int vis[10][10];
int dx[8]={-2,-2,-1,1,2,2,1,-1};
int dy[8]={-1,1,2,2,1,-1,-2,-2};
void dfs(int n,int m,int x,int y,int cnt)
{

	if(cnt==n*m)
	{
		ret++;
	}
	
	for(int i=0;i<8;i++)
	{
		int nx=x+dx[i];
		int ny=y+dy[i];
		
		if(nx<0 || nx>=n || ny<0 || ny>=m || vis[nx][ny])
			continue;
		vis[nx][ny]=1;
		dfs(n,m,nx,ny,cnt+1);
		vis[nx][ny]=0;
	}
}
int main()
{
	int t;
	cin>>t;
	while(t--)
	{
		int n,m,x,y;
		cin>>n>>m>>x>>y;
		ret=0;
		memset(vis,0,sizeof(vis));
		vis[x][y]=1;
		dfs(n,m,x,y,1);
		cout<<ret<<endl;
	}
	return 0;
}
